package Day015_File类_递归_IO流.demo04_递归练习;

import java.io.File;

/**
 * @author zhangyan
 * @date 2020/5/6 11:22
 */
public class Test3_文件搜索 {
    public static void main(String[] args) {

        /*
            输出Demo02\aaa目录中的所有.java文件的绝对路径。
            分析：
                1. 定义方法:获取目录中所有文件，子文件.子子文件.子子子文件.....
                2. 在方法中,遍历目录时，获取的子文件和子目录
                3. 在方法中,循环遍历获取的子文件和子目录
                4. 在方法中,遍历的时候要判断是文件还是目录
                5. 如果是文件,就判断该文件是否.java结尾,如果是就获取绝对路径打印输出
                6. 如果是文件夹,就1-4步骤递归一次
         */

        File file = new File("Demo02\\aaa");
        findFile(file);
    }

    public static void findFile(File file){
        //获取目录中所有文件
        File[] files = file.listFiles();

        //在方法中,循环遍历获取的子文件和子目录
        if (files != null){
            //在方法中,遍历的时候要判断是文件还是目录
            for (File file1 : files) {
                //如果是文件,就判断该文件是否.java结尾,如果是就获取绝对路径打印输出
                if (file1.isFile()){
                    //判断该文件是否.java结尾
                    if (file1.getName().endsWith(".java")){
                        //获取绝对路径打印输出
                        System.out.println(file1.getAbsolutePath());
                    }
                    //如果是文件夹,就递归一次
                } else if(file1.isDirectory()) {
                    findFile(file1);
                }
            }
        }
    }
}
